package org.dromara.common.web.enums;

import cn.hutool.captcha.generator.CodeGenerator;
import cn.hutool.captcha.generator.RandomGenerator;
import org.dromara.common.web.utils.UnsignedMathGenerator;
import lombok.AllArgsConstructor;
import lombok.Getter;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：验证码类型
 */
@Getter
@AllArgsConstructor
public enum CaptchaType {

    /**
     * 数字
     */
    MATH(UnsignedMathGenerator.class),

    /**
     * 字符
     */
    CHAR(RandomGenerator.class);

    /**
     * 该类中的私有常量clazz定义了一个扩展自CodeGenerator的类类型
     * 由于使用了通配符<? extends CodeGenerator>，该类类型可以是CodeGenerator的任意子类
     * 这种设计既保证了类型的灵活性，又确保了类型安全性，避免了非法的类型操作
     *
     * @see CodeGenerator // 假定这是被引用的类，实际使用时请替换为真实的类名
     */
    private final Class<? extends CodeGenerator> clazz;
}
